The invention relates to a method or a device for protecting a program, comprising a functional block, against unauthorized execution and/or analysis.
Previously known methods and devices encrypt the program to be protected so as to generate a protected program. The protected program can be executed only on a computer system comprising a protection module. The protection module verifies, at the start and, where appropriate, also during execution of the program, the presence of a required license. If the license is present, the protected program is decrypted and loaded into the working memory of the computer system. If no license is present, no decryption is effected, and a corresponding message can be output via the computer system.
This allows one to prevent execution of an unauthorized copy of the protected program on other computer systems.
However, this has the disadvantage that the program or the corresponding parts of the program, respectively, that are stored in the working memory is/are no longer encrypted and is/are thus unprotected after license verification and decryption of the program. Accordingly, it is principally possible for an attacker to make a copy of the unprotected program on the basis of the program or program parts, respectively, present in the working memory, which copy would then also be executable on computer systems without the protection module.
In view thereof, it is an object of the invention to provide a method and a device for protecting a program, comprising a functional block, against unauthorized execution and/or analysis, by which method and device the above-mentioned disadvantages can be overcome virtually completely.